Python pour la data science TD 1

TD01: Rappels de base

Intro

  • Cours Python de Lino Galiana, sous environnement SSP Cloud
  • Questions à dmarin@open-dc.com
  • Programme:
    • TD 01 - Rappels de base
    • TD 02 - Numpy, Pandas et GeoPandas
    • TD 03 - Git
    • TD 04 - API et webscrapping
    • TD 05 - Machine learning
    • TD 06 - Machine learning (2)
    • TD 07 - Introduction au NLP

Environnements Python, gestionnaire de modules et IDE

Pour programmer en Python on a besoin:

  • d’un exécutable Python (installé par défaut sur Linux et Mac), à installer sur Windows pour un environnement local.

  • d’un environnement de développement: IDE (VS Code, PyCharm, Spyder etc.)

  • d’un gestionnaire de modules (pip, conda)

Cet écosystème peut être local ou dans le cloud (Google Colab, SSP Cloud).

Dans le cadre du cours ==> écosystème cloud sous SSP Cloud avec IDE VS Code.

Note: En pratique on crée un environnement de développement local, avec un environnement virtuel: il s’agit d’un environnement de développement propre au projet, avec ses propres versions de modules, communiquées grâce au fichier requirements.txt.

Application: Créer une instance SSP Cloud:

-Se connecter sur le Datalab du SSP Cloud
- My Services / + New service
- Lancer un service VS Code
- Copier la clé de sécurité dans le presse-papier
- Créer un nouveau notebook jupyter
- Tester les commandes du TD
- Supprimer le service à la fin du TD!

Rappel des bases du langage Python

Note: On ne revient pas ici sur les notions de base de programmation telles que les variables, fonctions, boucles, conditions. On se concentre sur les spécificités de Python par rapport aux autres langages.

Types de base

Listes, dictionnaires et tuples

Listes:

li = [2, 3, 4]      # liste de 3 éléments
print(f'1ère valeur: {li[0]}')        # l'index commence à 0
li.append(5)        # ajoute un élément
print(li)
li.extend([6, 7])   # ajoute une liste à la liste
print(li)
li.pop(4)           # retire le 4ème élément de la liste (et non l'élément 4 de la liste!)
print(li)

# # boucle sur les éléments:
for el in li:
    print(el)

# # boucle avec conservation des index:
for ix, el in enumerate(li):
    print(f'index {ix}, valeur: {el}')

# # Comprehension lists:
li = [i for i in range(10) if i%2 == 0]

Dictionnaires

di = {'nom': 'Crusoé', 'prénom': 'Robinson', 'âge': 42}
print(di)
di['nom'] = 'Stévenin'  # les clés sont uniques
print(di) 
prenom = di.get('prénom', '???')        # clé existante
adresse = di.get('adresse', '???')      # clé manquante
print(f'prénom:\t{prenom},\nadresse:\t{adresse}')

Tuples:

tu = (49.4545, 2.4545)  # tuple à 2 éléments
print(f'{tu[0]}, {tu[1]}')
# tu[2] = 0               # le nombre d'éléments d'un tuple est invariable (pas de méthodes `append` ou `pop`)
# tu[1] = 0               # le contenu d'un tuple n'est pas modifiable

Mutabilité

En Python, seuls les types de base int, float et str ne sont pas mutables.

a = 2
b = a
b = 3
print(f'a: {a}, b: {b}')  # le contenu de a n'a pas changé: une copie de a a été réalisée pour être alouée à b (idem si a est un float ou str)

li1 = [1, 2]
print(f'li1: {li1}')
li2 = li1
li2[0] = 0
print(f'li2: {li2}\nli1: {li1}')  # le contenu de li1 a été modifié lorsque li2 a été modifié

# # Solution: créer une copie de l'objet mutable:
li3 = li1.copy()
li3[0] = 30
print(f'li3: {li3}\nli1: {li1}')  # le contenu de li1 n'a pas été modifié lorsque li3 a été modifié

Exercices de révision

Imports de modules

TODO

Arborescence de projet

TODO

Classes et programmation orientée objet (POO ou OOP)

TODO

Conventions PEP-8

TODO